It is not easy to provide robust and highly reliable human-interface devices such as keyboards and pointing devices if they are to be coupled with computers via wireless links.
From a historical point of view, human-interface device interfaces have been characterized as having greater and greater complexity as time has progressed. The first human-interface devices used with personal computers used fairly simple serial interfaces together with relatively simple BIOS (basic input-output system) code. The BIOS (residing in ROM) in these simple implementations was the only software needed to make the user inputs available to the system console, the operating system and to software applications. Subsequent personal computer designs such as the IBM PC. Jr. attempted to use infrared communications links, but such computers did not come to be commonly used, in part due to unreliability of the wireless links.
More recently, computer designers have made provisions for high-speed serial interfaces such as Universal Serial Bus (xe2x80x9cUSBxe2x80x9d) interfaces. Such interfaces have been shared among other devices with keyboards and pointing devices. The high speed, and the ability to interface multiple type of devices through the same connection, increases dramatically the complexity of implementation. While in the past BIOS code was sufficient to handle input from keyboards, mice and simple serial devices, today any device connected to a link such as USB requires the services of complicated OS drivers. Such approaches experience long deployment periods, partly because not all operating systems have support for USB. Users are not always happy with such devices because the USB cables are stiffer and less flexible than the cables to which users are accustomed with regard to keyboards and pointing devices such as mice, touch-pads and other rodents. One of the most important issues that designers have had to resolve in order to be able to adopt USB is the ability of USB keyboards and mice to provide input without the assistance of software drivers. This is important during the boot stage of the computer system, in order to be able to provide human input for resolving system problems in situations where the OS cannot operate. Computer designers have, however, devised BIOSes which are able to receive input from human-interface devices and which can provide the input to the operating system and to software applications.
Still more recently, system designers have attempted to provide wireless communications between computers and other devices. Wireless devices following the IEEE 802.11b standard have permitted communications at up to 11 Mbps between computers and local area networks and the Internet, though at a cost of some considerable power consumption. Still other wireless hardware following the Bluetooth specifications have permitted communications between a variety of devices including human-interface devices such as keyboards and pointing devices, along with personal computers, personal organizers, printers, cellular phones and personal area networks, all at lower power consumption than if IEEE 802.11b is followed.
Present-day wireless systems offer a substantial drawback in that considerable computational overhead is required to implement the various protocol layers defined in the specifications for the systems. There is substantial economic pressure to reduce hardware costs for the wireless systems to the lowest possible levels, in part because history has shown that among competing standards, the per-box hardware cost for implementation of the standard is one of the factors affecting the eventual widespread adoption of the standard. Such pressures prompt system designers to assume that much of the computational overhead may be offloaded to the main processor of the system and to its operating system. As a result, operating system drivers are generally required to be used in connection with the hardware and firmware of the wireless solution. Historically it has often been found that the standards and specifications for implementation of new systems represent a moving target, and this too prompts system designers to shift as much of the computational function to drivers (that is, to places other than hardware and firmware) because this makes it easier to ship product that has some possibility of continued usability even in the event of changes in the associated standards or specifications.
Many of the devices to be coupled by means of wireless links are not absolutely critical to function and control of the central device such as a computer. Loss of use of an external headset or game console, for example, could leave the keyboard functioning so as to permit a user to take steps to restore the function of the headset or game console.
There is, however, an understandable desire on the part of users to be able to shift any and all devices which were previously wired to the wireless link, and an understandable desire on the part of system designers to accommodate such users. It is thus unsurprising to see system designers attempting to provide wireless keyboards, touch pads, and mice and other rodents, all intended to communicate with a computer through its wireless interface such as a Bluetooth host interface.
It is, however, all too easy for a system designer merely to provide wireless hardware in the human interface device and to rely upon the existing wireless infrastructure, including host hardware, firmware, and operating system driver, for end-to-end connectivity between the human interface device and the operating system and application software. Such an arrangement, as will be appreciated from the foregoing and following discussion, is at risk of loss of function under any of a number of conditions including loss or corruption of wireless drivers or human interface device (xe2x80x9cHIDxe2x80x9d) related drivers, or a disk failure, and thus is not as robust as prior-art wired systems. For a system designer who has considered the points made above, there is thus a great need for a reliable and robust approach for provision of human-interface devices which are communicatively coupled to a computer by wireless means.
A wireless host is used with a computer having a BIOS, an operating system, a serial bus interface coupled with the BIOS, the wireless host operating under a protocol that functions only in the presence of a corresponding wireless and HID communications driver in the operating system, and the BIOS characterized in that human interface device information received via the serial bus interface can be made available to the operating system if necessary by means other than the wireless and HID communications driver. Human interface device information is received via the wireless host. Depending on a predetermined condition, the human interface device information is passed to a wireless communications driver in the operating system, or is passed to the serial bus interface and is made available to the operating system by means other than the wireless communications driver. The predetermined condition may be the absence of the wireless communications driver, or for example may be the determination that the human interface device information is an escape sequence. In this way, user communications to the computer can be robust even in the event of operating system or software failure.